//
//  ViewController.swift
//  lesson6闭包的概念
//
//  Created by 张建 on 2018/3/16.
//  Copyright © 2018年 micheal. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        DispatchQueue.global().async {
            print(Thread.current)
            print("执行耗时操作")
            DispatchQueue.main.async {
                print(Thread.current)
                print("主线线程刷新界面")
            }
        }
    }
    
    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        
        
        /**
         1、将闭包通过实参传递给函数
         2、如果闭包是函数的最后一个参数，那么闭包可以写在函数()的后面
         3、如果函数只接受一个参数，并且这个参数是闭包，那么函数的()可以省略
        */
        //情况1
        
//        loadData (callBack: {
//            print("刷新主线程！")
//        })
        
        //情况2
//        loadData() {
//
//            print("刷新主线程！")
//        }
        
        //情况3
//        loadData {
//            print("刷新主线程！")
//        }

        
        
        
        //情况2
//        loadData1(shoudLoad: true) {
//            print("刷新主线程!")
//        }
        
        //情况1
        loadData1(shoudLoad: true, callBack: {

            print("刷新主线程!")
        })
    }
    
    
    //函数只有一个参数并且是闭包，闭包无参数无返回值
    func loadData(callBack: () -> ()) {
        print("执行耗时操作！")
        callBack()
    }
    
    //函数不止一个参数
    func loadData1(shoudLoad: Bool, callBack: () ->Void) {
        
        if shoudLoad {
            print("执行耗时操作!")
            callBack()
        }
    }
    

}

